#作业一、将之前封装的MyMath类中的实例方法改为静态方法, 体会两者的区别.
class MyMath:

    @staticmethod    #定义静态方法
    def sqrt(a):
        return a ** (1/2)

    def power(self,a, b):   #定义实例方法
        return a ** b

sqr = MyMath()
print(sqr.sqrt(9))

pow = MyMath()
print(pow.power(2, 3))

'''为上节课自定义类添加以下功能:
添加类属性
添加类私有属性
添加类方法或者类的私有属性
在__init__方法中初始化实例属性
在__init__方法中绑定私有实例属性
在自定义类中实现__str__, 自定义输出格式'''

class Clothes(object):
    aa = "我好喜欢这件衣服"                             #添加类属性
    __bb = "这件衣服太贵了，花了我一个月的工资"            #添加类私有属性

    def __init__(self, price, size, color):   #在__init__方法中初始化实例属性
        self.__price = price                    #在__init__方法中绑定私有实例属性
        self.size = size
        self.color = color

    @classmethod                                 #添加类方法获取类的私有属性
    def cc(cls):
        return cls.__bb

    def __str__(self):                          #自定义格式化输出
        return f"这件衣服的价格是：{self.__price}, 尺寸是：{self.size}, 颜色是：{self.color}"


print(Clothes.aa)                        #输出类属性
print(Clothes._Clothes__bb)              #输出类私有属性

coat = Clothes(188, 'M', "blue")         #添加实例和实例属性
print(coat._Clothes__price, coat.size, coat.color)     #输出实例属性和实例的私有属性
print(Clothes.__str__(coat))             #格式化输出

print(coat.cc())                         #私有属性”__case“可以在类内部直接访问